package strategy;

/**
 * @Author: Ma JiBin
 * @Email: 1423553596@qq.com
 * @Date: 2018/9/13 16:18
 * @Description: 使用了某种策略的类
 */
public class Context {
    /**
     * 策略类型属性
     */
    private Strategy strategy;

    /**
     * 构造方法
     * 根据所传入的对象类型，决定executeStrategy方法使用哪种策略操作
     * @param strategy 策略接口实现类
     */
    public Context(Strategy strategy) {
        this.strategy = strategy;
    }

    /**
     * 调用策略接口实现类操作方法，对两个数进行操作
     * @param num1
     * @param num2
     * @return
     */
    public int executeStrategy(int num1, int num2) {
        return strategy.doOperation(num1, num2);
    }
}
